package co.gov.medellin.ssti.sub.model.service.impl;

import java.util.Collection;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import co.gov.medellin.ssti.sub.model.dao.BeneficiarioDAO;
import co.gov.medellin.ssti.sub.model.dao.exception.DAOException;
import co.gov.medellin.ssti.sub.model.service.BeneficiarioService;
import co.gov.medellin.ssti.sub.model.vo.BeneficiarioVO;
import co.gov.medellin.ssti.sub.model.vo.BeneficioVO;

@Service
public class BeneficiarioServiceImpl implements BeneficiarioService {
	@Autowired
	BeneficiarioDAO beneficiarioDAOImpl2;

	public Collection<BeneficiarioVO> findBeneficiarioMEL(
			BeneficiarioVO criteria) {
		try {
			return beneficiarioDAOImpl2.findBeneficiarioMEL(criteria);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public Collection<BeneficiarioVO> findBeneficiarioSisben(
			BeneficiarioVO criteria) {
		try {
			return beneficiarioDAOImpl2.findBeneficiarioSisben(criteria);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public Collection<BeneficiarioVO> findGrupoFamiliarSisben(String tipoDoc,
			String numDoc) {
		try {
			return beneficiarioDAOImpl2
					.findGrupoFamiliarSisben(tipoDoc, numDoc);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public Collection<BeneficiarioVO> findBeneficiarioByCriteria(
			BeneficiarioVO criteria, String strOrigen) {
		try {
			return beneficiarioDAOImpl2.findBeneficiarioByCriteria(criteria,
					strOrigen);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public Collection<BeneficiarioVO> findBeneficiarioByCriteria(
			BeneficiarioVO criteria, String strOrigen, Long codePrograma,
			Long codeSubprograma) {
		try {
			return beneficiarioDAOImpl2.findBeneficiarioByCriteria(criteria,
					strOrigen, codePrograma, codeSubprograma);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public int update(BeneficiarioVO criteria) {
		try {
			return beneficiarioDAOImpl2.update(criteria);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public Collection<BeneficiarioVO> findCabezasGrupoFamiliar(
			BeneficiarioVO criteria) {
		try {
			return beneficiarioDAOImpl2.findCabezasGrupoFamiliar(criteria);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public Collection<BeneficiarioVO> findGrupoFamiliar(BeneficiarioVO criteria) {
		try {
			return beneficiarioDAOImpl2.findGrupoFamiliar(criteria);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public String findEdad(Long codeBeneficiario) {
		try {
			return beneficiarioDAOImpl2.findEdad(codeBeneficiario);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public String[] insert(BeneficiarioVO criteria) {
		try {
			return beneficiarioDAOImpl2.insert(criteria);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public Collection<BeneficioVO> findBeneficiosByCodBen(Long codeBeneficiario) {
		try {
			return beneficiarioDAOImpl2
					.findBeneficiosByCodBen(codeBeneficiario);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public Collection<BeneficioVO> findUltimosBeneficios(Long codeBeneficiario) {
		try {
			return beneficiarioDAOImpl2.findUltimosBeneficios(codeBeneficiario);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public boolean delete(Long codeBeneficiario, String user, String terminal,
			String fecha) {
		try {
			return beneficiarioDAOImpl2.delete(codeBeneficiario, user,
					terminal, fecha);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public boolean deleteBeneficio(Long codeBeneficiario, Long codeBeneficio,
			String user, String terminal, String fecha) {
		try {
			return beneficiarioDAOImpl2.deleteBeneficio(codeBeneficiario,
					codeBeneficio, user, terminal, fecha);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public boolean isBeneficiarioAsignadoAGrupoFamiliar(
			Long codigoBeneficiario, Long codigoGrupoFamiliar) {
		try {
			return beneficiarioDAOImpl2.isBeneficiarioAsignadoAGrupoFamiliar(
					codigoBeneficiario, codigoGrupoFamiliar);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public boolean isBeneficiarioSubprograma(Long codeBeneficiario,
			Long codeSubprograma) {
		try {
			return beneficiarioDAOImpl2.isBeneficiarioSubprograma(
					codeBeneficiario, codeSubprograma);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public Long findCodeBeneficiarioByCodeBOT(Long codeBOT) {
		try {
			return beneficiarioDAOImpl2.findCodeBeneficiarioByCodeBOT(codeBOT);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

}
